<?php
	// On prolonge la session
	session_start();
	
	$id_anim='';
	$code='';
	$message='';
	
	require_once dirname(__FILE__) . "/../../includes/config.php";
	require_once PHP_ROOTPATH.'/classes/database.php';
	
	$idconnect = Database::getInstance();

	//vérfication des droits de l'utilisateur
	$querytest = pg_query($idconnect,"SELECT * FROM droit_utilisateur WHERE (id_droit=12 or id_droit=1 ) and id_user=".$_SESSION['membre_id']);
	$saise_sequence = pg_num_rows($querytest);
	if(isset($_SESSION['membre_id']) && $saise_sequence != 0){
			
		// On teste si la variable de session existe et contient une valeur
		if(empty($_SESSION['id_anim'])){
			// Si inexistante ou nulle, on redirige vers le formulaire de login
			header('Location: ../saisie.php');
			exit();
		}
		else{
			$id_anim=$_SESSION['id_anim'];
			$code=$_SESSION['code'];
		}
		
		// Remplissage de la base de données
		if(!empty($_POST)){
			//vérification que les champs ont bien été remplis
			if($_POST['date']=="none" || $_POST['exp']=="none" || $_POST['gene']=="none" || empty($_POST['entier'])){
				$message = 'Veuillez entrer une date de test, un expérimentateur et un nom de gene et si le séquençage est entier!';
			}
			else{
				$_POST['date'] = htmlspecialchars($_POST['date']);
				$_POST['gene'] = htmlspecialchars($_POST['gene']);
				$_POST['exp'] = htmlspecialchars($_POST['exp']);
				$_POST['entier'] = htmlspecialchars($_POST['entier']);

				$gene='';
				if($_POST['gene']=="autre" && !(empty($_POST['autre_gene']))){$gene = htmlspecialchars($_POST['autre_gene']);}
				else if($_POST['gene']!="autre"){$gene = $_POST['gene'];}
				
				if(preg_match("#^\d\d\/\d\d\/\d\d\d\d$#",$_POST['date']) && $gene!=''){
					//récupération de l'id_type_test
					$query = pg_query($idconnect,"SELECT id_type_test FROM type_test WHERE label LIKE '%Séquencage%'");
					$back = pg_fetch_assoc($query);
					$id_type_test = $back['id_type_test'];
					
					//vérification de l'existance d'un test à cette date avec cet expérimentateur
					$query1 = pg_query($idconnect,"SELECT id_test FROM test  WHERE date_test='".$_POST['date']."' AND experimentateur='".$_POST['exp']."' 
					AND id_type_test=$id_type_test");
					$nb1 = pg_num_rows($query1);				
					if($nb1!=0){ // si une date de test avec cet expérimentateur existe déjà
						$back1 = pg_fetch_assoc($query1);  
						$id_test = $back1['id_test'];
					}
					else{ //création de test
						$sql = pg_query($idconnect,"INSERT INTO test (id_type_test,date_test,experimentateur) VALUES ($id_type_test,'".$_POST['date']."',
						'".$_POST['exp']."') RETURNING id_test");
						$insert_row = pg_fetch_row($sql);
						$id_test = $insert_row[0];
					}
					
					//vérification de l'existance de l'id_res
					$query2 = pg_query($idconnect,"SELECT id_res FROM resultat_test WHERE id_test=$id_test AND id_animal=$id_anim");
					$nb2 = pg_num_rows($query2);
					if($nb2!=0){ //si un id_res existe déjà
						$back2 = pg_fetch_assoc($query2);  
						$id_res = $back2['id_res'];
					}
					else{ //création de l'id_res
						$sql = pg_query($idconnect,"INSERT INTO resultat_test (id_test,id_animal) VALUES ($id_test,$id_anim) RETURNING id_res");
						$insert_row = pg_fetch_row($sql);
						$id_res = $insert_row[0];
					}
					
					//vérification de l'existance de sequençage_ADN
					$query3 = pg_query($idconnect,"SELECT id_res FROM sequencage_adn WHERE id_res=$id_res AND entier='".$_POST['entier']."'");
					$nb3 = pg_num_rows($query3);
					if($nb3!=0){ //si un id_res existe déjà
						$back3 = pg_fetch_assoc($query3);  
						$id_res2 = $back3['id_res'];
					}
					else{ //création de sequençage_adn
						$sql = pg_query($idconnect,"INSERT INTO sequencage_adn (id_res,entier) VALUES ($id_res,'".$_POST['entier']."') RETURNING id_res");
						$insert_row = pg_fetch_row($sql);
						$id_res2 = $insert_row[0];
					}
					
					//vérification de l'existance de gene
					$query4 = pg_query($idconnect,"SELECT id_res FROM gene WHERE id_res=$id_res2 AND nom_gene='$gene'");
					$nb4 = pg_num_rows($query4);
					if($nb4!=0){ //si un id_res existe déjà
						$back4 = pg_fetch_assoc($query4);  
						$id_res3 = $back4['id_res'];
					}
					else{ //création de sequençage_adn
						$sql = pg_query($idconnect,"INSERT INTO gene (id_res,nom_gene) VALUES ($id_res2,'$gene') RETURNING id_res");
						$insert_row = pg_fetch_row($sql);
						$id_res3 = $insert_row[0];
					}
					
					//Pour les snp
					if(!(empty($_POST['snp'])) && $_POST['snp']!=0){
						$snp = $_POST['snp'];
						for($i=1; $i<=$snp; $i++){
							$var='';
							$loc='';
							$val='';
							foreach($_POST as $cle=> $value){
								if($cle=="var_s$i" && $value!="none"){
									if($value!="autre"){$var=htmlspecialchars($value);}
									else{
										foreach($_POST as $cle1=> $value1){
											if($cle1=="autre_var_s$i"){$var=htmlspecialchars($value1);}
										}
									}
								}
								if($cle=="loc_s$i" && $value!="none"){
									if($value!="autre"){$loc=htmlspecialchars($value);}
									else{
										foreach($_POST as $cle1=> $value1){
											if($cle1=="autre_loc_s$i"){$loc=htmlspecialchars($value1);}
										}
									}
								}
								if($cle=="valeur_s$i" && $value!="none"){$val=htmlspecialchars($value);}
							}
							
							//vérification de l'existance du snp
							if($var!='' && $loc!='' && $val!=''){
								$query5 = pg_query($idconnect,"SELECT id_snp FROM SNP WHERE id_res=$id_res3 AND nom_gene='$gene' AND type_variation='$var' 
								AND localisation='$loc' AND valeur_res=$val");
								$nb5 = pg_num_rows($query5);
								if($nb5!=0){ //si un snp existe déjà
									$message .= "Le snp $var à la localisation $loc existe déjà. ";
								}
								else{ //création du snp
									$sql = pg_query($idconnect,"INSERT INTO snp (id_res,nom_gene,type_variation,localisation,valeur_res) 
									VALUES ($id_res3,'$gene','$var','$loc',$val)");
								}
							}
							else{$message .= "Pas de localisation, de type de variation ou de valeur pour le SNP. ";}
						}
					}
					//Pour les mutations
					if(!(empty($_POST['mut'])) && $_POST['mut']!=0){
						$mut = $_POST['mut'];
						for($i=1; $i<=$mut; $i++){
							$var='';
							$loc='';
							$val='';
							$type='';
							
							foreach($_POST as $cle=> $value){
								if($cle=="var_m$i" && $value!="none"){
									if($value!="autre"){$var=htmlspecialchars($value);}
									else{
										foreach($_POST as $cle1=> $value1){
											if($cle1=="autre_var_m$i"){$var=htmlspecialchars($value1);}
										}
									}
								}
								if($cle=="loc_m$i" && $value!="none"){
									if($value!="autre"){$loc=htmlspecialchars($value);}
									else{
										foreach($_POST as $cle1=> $value1){
											if($cle1=="autre_loc_m$i"){$loc=htmlspecialchars($value1);}
										}
									}
								}
								if($cle=="type_m$i" && $value!="none"){
									if($value!="autre"){$type=htmlspecialchars($value);}
									else{
										foreach($_POST as $cle1=> $value1){
											if($cle1=="autre_type_m$i"){$type=htmlspecialchars($value1);}
										}
									}
								}
								if($cle=="valeur_m$i" && $value!="none"){$val=htmlspecialchars($value);}
							}
							//vérification de l'existance de la mutation
							if($var!='' && $loc!='' && $val!='' && $type!=''){
								$query5 = pg_query($idconnect,"SELECT id_mutation FROM mutation WHERE id_res=$id_res2 AND nom_gene='$gene' AND type_variation='$var' 
								AND localisation='$loc' AND valeur_res=$val AND type_mutation='$type'");
								$nb5 = pg_num_rows($query5);
								if($nb5!=0){ //si une mutation existe déjà
									$message .= "La mutation $var à la localisation $loc existe déjà. ";
								}
								else{ //création du snp
									$sql = pg_query($idconnect,"INSERT INTO mutation (id_res,nom_gene,type_variation,localisation,valeur_res,type_mutation) 
									VALUES ($id_res2,'$gene','$var','$loc',$val,'$type')");
								}
							}
							else{
								$message .= "Pas de localisation, de type de variation ou de valeur pour la mutation. ";
							}
						}
					}
					$message .= "Séquençage enregistré";
				}
				else{ $message.= "Date ou nom du gène invalide";}
			}
		}
	}
	else{
		header('Location: ../../site.php');
		exit();
	}
?>

<!DOCTYPE html>
<html>
	<head>
        <meta charset="utf-8" />
        <link rel="stylesheet" href="../../style.css" />
		<!--[if lt IE 9]>
        <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
        <!--[if lte IE 7]>
        <link rel="stylesheet" href="../../style_ie.css" />
        <![endif]-->
        <title>Base de données microcèbes</title>
        
        <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
		<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
		<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
		<script src="../../js/date_picker.js"></script>
		<script src="../../js/verif_form.js"></script>
		<script>
		$(function() {
			$( "#datepicker" ).datepicker();
		});
		</script>
        <script type="text/javascript" src="../../js/oXHR.js"></script>
        <script type="text/javascript" src="seq_s.js"></script>
    </head>
    
    <body>
		<?php include((dirname(dirname(dirname(__FILE__))))."/menu.php"); ?>

		<section id="main">
			<header>
				<h1>Saisie - Séquençage animal <?php echo $code; ?></h1>
			</header>
			<?php include((dirname(dirname(__FILE__)))."/menu_saisie.php"); ?>
			<section id="animal">
				<div id="menu3">
					<ul id="onglets">
						<li><a href="genotype_s.php">Génotypage</a></li>
						<li class="active"><a href="seq_s.php">Séquençage</a></li>
					</ul>
				</div>
				<section id="contenu">
				<form method="post" action="<?php echo htmlspecialchars($_SERVER['REQUEST_URI'], ENT_QUOTES); ?>" id="formulaire" onsubmit="return verif_form(this)" >
					<p id="infos">
					<label class="code2"><?php echo $message; ?></label><br/>
					<label class="label">Séquençage entier:</label><input type= "radio" name="entier" value="True" class="box">Oui
					<INPUT type= "radio" name="entier" value="False">Non
					<span class="code3" id="erreur_entier">* Cocher une case</span><br/>
					
						<label class="label">Nom du gène:</label>
						<select class="box" name="gene" onchange="afficher(this)">
							<option value="none">Sélection</option>
							<?php                   
								 //remplissage du select en fonction des genes enregistrés dans la base de données
								$query = pg_query($idconnect,"SELECT DISTINCT(nom_gene) FROM Gene ORDER BY nom_gene");
								while ($back = pg_fetch_assoc($query)) {
									echo "<option value=\"" . $back["nom_gene"] . "\">" . $back["nom_gene"] . "</option>";
								}
							?> 
							<option value="autre">Nouveau</option>  		
						</select><span class="code3" id="erreur_gene">* Sélectionner un gène</span>
						
						<label class="autre_g">Précisez:</label><input type="text" class="autre_g" id="autre_gene" name="autre_gene">
						<span class="code3" id="erreur_autre_gene">* Remplir le champ</span><br/>
						
						<label class="label">Date du test:</label><input name="date" type="text" id="datepicker" class="box">
						<span class="code3" id="erreur_date">* Champ du type jj/mm/aaaa</span><br/>
						
						<label class="label">Expérimentateur:</label>
						<select class="box" name="exp">
							<option value="none">Sélection</option>
							<?php                   
								//remplissage du select avec la liste des utilisateurs inscrits
								$query = pg_query($idconnect,"SELECT DISTINCT (Prenom, Nom) as name FROM Utilisateur WHERE statut!='Visiteur' AND statut!='Collaborateur extérieur'");
								while ($back = pg_fetch_assoc($query)) {
									$temp =str_replace(',',' ',$back["name"]);
									$temp =str_replace('(','',$temp);
									$temp =str_replace(')','',$temp);
									echo "<option value=\"" . $temp."\">" . $temp."</option>\n";
								}
							?>   		
						</select><span class="code3" id="erreur_exp">* Sélectionner un expérimentateur</span><br/>
						
						<input type="button" class="bouton2" id="snp" value="Ajouter un snp" onclick="ajoutSnp(this)">
						<input type="button" id="mut" value="Ajouter une mutation" onclick="ajoutSnp(this)"><br/>
						
						<input type="hidden" value="0" name="snp" id="nb_snp">
						<input type="hidden" value="0" name="mut" id="nb_mut">
					</p>
					
					<p id="infos_sm"></p>
					<input type="submit" id="bouton3" value="Valider le test" >
				</form>	
				</section>
			</section>
		</section>
	</body>
</html>
